/**********************************************************************
 Copyright (C) 2010 Teppo Eeva

 This file is part of Arithmetic Game.
 For more information, see <http://code.google.com/p/arithmetic-game/>

 Arithmetic Game is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 Arithmetic Game is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with Arithmetic Game.  If not, see <http://www.gnu.org/licenses/>.
 **********************************************************************/

#include "audiomanager.h"
#include <QCoreApplication>
#include <QDebug>

const QString faultSoundName("button-12.wav");
const QString correctSoundName("button-19.wav");
const QString bonusSoundName("bonus.wav");
const QString gameOverSoundName("gameover.wav");

AudioManager::AudioManager(QObject *parent) :
    QObject(parent),
    m_audioEnabled(true)
{
#ifndef Q_OS_SYMBIAN
    mp_faultSound = new QSound( faultSoundName );
    mp_correctSound = new QSound( correctSoundName );
    mp_bonusSound = new QSound( bonusSoundName );
    mp_gameOverSound = new QSound( gameOverSoundName );
#else // Q_OS_SYMBIAN
    // The audio files will be stored in application's private folder in Symbian
    QString privateFolder = QCoreApplication::applicationDirPath() + "/";
    mp_faultSound = new QSound( privateFolder + faultSoundName );
    mp_correctSound = new QSound( privateFolder + correctSoundName );
    mp_bonusSound = new QSound( privateFolder + bonusSoundName );
    mp_gameOverSound = new QSound( privateFolder + gameOverSoundName );
#endif // Q_OS_SYMBIAN
}

AudioManager::~AudioManager()
{
    delete mp_faultSound;
    delete mp_correctSound;
    delete mp_bonusSound;
    delete mp_gameOverSound;
}

void AudioManager::playFault()
{
    qDebug() << "AudioManager::playFault" << mp_faultSound->fileName();
    if (m_audioEnabled)
    {
        mp_faultSound->play();
    }
}

void AudioManager::playCorrect()
{
    qDebug() << "AudioManager::playCorrect" << mp_correctSound->fileName();
    if (m_audioEnabled)
    {
        mp_correctSound->play();
    }
}

void AudioManager::playBonus()
{
    qDebug() << "AudioManager::playBonus" << mp_bonusSound->fileName();
    if (m_audioEnabled)
    {
        mp_correctSound->stop();
        mp_bonusSound->play();
    }
}

void AudioManager::stopBonus()
{
    qDebug() << "AudioManager::stopBonusSound" << mp_bonusSound->fileName();
    if (m_audioEnabled)
    {
        mp_bonusSound->stop();
    }
}

void AudioManager::playGameOver()
{
    qDebug() << "AudioManager::playGameOver" << mp_gameOverSound->fileName();

    if (m_audioEnabled)
    {
        mp_faultSound->stop();
        mp_gameOverSound->play();
    }
}

void AudioManager::enableAudio(bool enabled)
{
    m_audioEnabled = enabled;
}
